﻿using System;
using LayerEntity.Persona;
using LayerEntity.Sistema;

namespace System2012.Persona
{
    public partial class MantenimientoDireccion : DevExpress.XtraEditors.XtraForm 
    {
        IEPersona persona = null;
        public MantenimientoDireccion( IEPersona per)
        {
            this.InitializeComponent();
            persona = per;
        }

        #region Metodos
        private void SetDirecciones() {
            TxtPersona.EditValue = persona.FullName;
            TxtNumero.EditValue = persona.NumeroDocumento;
            EDocumento doc = SystemUtils.RecordManagerCommonList.GetDocument((long) persona.IdTipoDocumento);
            if (doc != null) {
                TxtDocumento.EditValue = doc.Abreviatura;
            }
            RefreshData();
        }

        private void RefreshData() {
            gridControl1.DataSource = persona.GetAddress();
            gridControl1.RefreshDataSource();
        }
        private void Editar(EDireccion dir) {
            if (dir != null) {
                ucDireccion1.SetDireccion(dir);
            }
        }
        void Save() {
            EDireccion dir = ucDireccion1.GetDireccion();
            dir.IdPersona = persona.IdPersona.Trim();
            if (dir != null) {
                int idAddres = SystemUtils.RecordManagerPersona.SaveAddress(dir, ucDireccion1.Operacion);

                if (idAddres > 0)
                {
                    dir.Item = idAddres;
                    persona.AddAddressInfo(dir);
                    RefreshData();
                }
                else {
                    SystemUtils.AlerMessaje("Datos no Actualizados");
                }
            }
        }
        #endregion

        #region Propiedades
        public IEPersona Persona
        {
            get
            {
                return persona;
            }
        }
        #endregion

        private void MantenimientoDireccion_Load(object sender, EventArgs e)
        {
            SetDirecciones();
        }

        private void BarManager1ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if ((string)e.Item.Tag == "Nuevo") {
                ucDireccion1.NewAddress();
            }
            if ((string)e.Item.Tag == "Guardar") {
                Save();
            }
            if ((string)e.Item.Tag == "Eliminar") { }
            if ((string)e.Item.Tag == "Exportar") {
                if (gridView1.RowCount > 0)
                {
                    SystemUtils.Exportar("Direcciones", gridControl1);
                }
                else {
                    SystemUtils.ShowMessaje("No hay Datos que Exportar", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                }
            }
        }

        private void CustomText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
        {
            if (e.Column.Name == "gcEstado") {
                object obj = gridView1.GetRowCellValue(e.RowHandle, gcIdEstado);
                if (obj != null) {
                    EEstado est = SystemUtils.RecordManagerCommonList.GetEstadoById((int)obj);
                    if (est != null) {
                        e.DisplayText = est.Descripcion;
                    }
                }
            }

            if (e.Column.Name == "gcDesUbigeo")
            {
                object obj = gridView1.GetRowCellValue(e.RowHandle, gcUbigeo);
                if (obj != null) {
                    EUbigeo ubi = SystemUtils.RecordManagerCommonList.GetUbigeoByUbigeo(obj.ToString());
                    if (ubi != null) {
                        e.DisplayText = ubi.ToString();
                    }
                }
            }
        }
        
        private void CambiandoFila(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            Editar((EDireccion)gridView1.GetFocusedRow());
        }
    }
}